#ifndef __MVP_FONT_H__
#define __MVP_FONT_H__

#include "mvvcd.h"

/**
 * @brief 字库初始化
 * @param  mvvcd_void_t
 * @return 
 * - success : 0
 * - failed : errno
 */
mvvcd_s32_t mvp_font_init(mvvcd_void_t);
/**
 * @brief 字库反初始化
 * @param  mvvcd_void_t
 * @return mvvcd_void_t
 */
mvvcd_void_t mvp_font_uninit(mvvcd_void_t);

/**
 * @brief 将一个小的缓冲区里的数据叠到一个大的缓冲区上面
 * @param big_buf       [out] : <mvvcd_u8ptr_t> 目标大的缓冲区
 * @param src_width     [in] :  <mvvcd_s32_t> 大缓冲区对应的图片宽度
 * @param src_height    [in] ： <mvvcd_s32_t> 大缓冲区对应的图片缓冲区高度
 * @param small_buf     [in] ： <const mvvcd_u8ptr_t> 小的缓冲区
 * @param dst_width     [in] :  <mvvcd_s32_t> 缓冲区宽
 * @param dst_height    [in] ： <mvvcd_s32_t> 缓冲区高度
 * @param x             [in] :  <mvvcd_s32_t> 在目标缓冲区复制的起始坐标
 * @param y             [in] :  <mvvcd_s32_t> 在目标缓冲区复制的起始坐标
 * @return 
 */
mv_void_t mvp_buffer_to_buffer(   mvvcd_u8ptr_t big_buf, mvvcd_s32_t src_width, mvvcd_s32_t src_height,
                                        const mvvcd_u8ptr_t small_buf, mvvcd_s32_t dst_width, mvvcd_s32_t dst_height, mvvcd_s32_t x, mvvcd_s32_t y);

/**
 * @brief 将字体渲染描绘成rgb8888的buffer
 * @param pbuf  [out] : 目标缓冲区
 * @param buffer_w  [in] : 缓冲区宽度
 * @param x [in] : 目标缓冲区字体起始坐标
 * @param y [in] : 目标缓冲器字体起始坐标
 * @param strr [in] : 字符串
 * @param c [in] : 颜色
 * @return 
 */
mvvcd_void_t mvp_font_draw_buffer(mvvcd_u8ptr_t pbuf, mvvcd_s32_t buffer_w, mvvcd_s32_t x, mvvcd_s32_t y, mvvcd_u8ptr_t strr, mvvcd_s32_t c);
mvvcd_void_t mvp_font_draw_buffer_rgb565(mvvcd_u8ptr_t pbuf, mvvcd_s32_t buffer_w, mvvcd_s32_t x, mvvcd_s32_t y, mvvcd_u8ptr_t strr, mvvcd_s32_t c);
/**
 * @brief 将字体从右至左渲染描绘成rgb8888的buffer
 * @param pbuf  [out] : 目标缓冲区
 * @param buffer_w  [in] : 缓冲区宽度
 * @param x [in] : 目标缓冲区字体起始坐标
 * @param y [in] : 目标缓冲器字体起始坐标
 * @param strr [in] : 字符串
 * @param c [in] : 颜色
 * @return 
 */
mvvcd_void_t mvp_font_draw_buffer_right(mvvcd_u8ptr_t pbuf, mvvcd_s32_t buffer_w, mvvcd_s32_t x, mvvcd_s32_t y, mvvcd_u8ptr_t strr, mvvcd_s32_t c);
/**
 * @brief 字体大小设置
 * @param size 
 * @return 
 */
mvvcd_void_t mvp_font_size_set(mvvcd_s32_t size);
/**
 * @brief 计算字符串渲染出来以后的宽度，单位：像素
 * @param pv8_str 字符串
 * @return 
 * - success : 0
 * - failed : -1;
 */
mv_s32_t mvp_get_string_widthpx(mv_v8ptr_t pv8_str);

#endif